package com.model.vo.sys.common;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.util.List;

/**
* @Author: zql
* @Description:
* @Data: 2021-07-23
*/
@Data
public class SystemInfosVO {
    @ApiModelProperty(value = "系统内存信息",required = true)
    public MemInfoVO memInfo;
    @ApiModelProperty(value = "进程信息",required = true)
    public ProcessInfoVO processInfo;
    @ApiModelProperty(value = "系统信息",required = true)
    public SysInfoVO sysInfo;
    @ApiModelProperty(value = "系统盘符信息",required = true)
    public List<SysFileInfoVO> sysFileInfo;
    @ApiModelProperty(value = "系统jvm信息",required = true)
    public JvmInfoVO jvmInfo;
    @ApiModelProperty(value = "CPU信息",required = true)
    public CpuInfoVO cpuInfo;

    @ApiModel(description = "系统内存信息")
    public static class MemInfoVO {
        @ApiModelProperty(value = "总内存",required = true)
        public String total;
        @ApiModelProperty(value = "内存使用率",required = true)
        public String usageRate;
        @ApiModelProperty(value = "使用内存",required = true)
        public String used;
        @ApiModelProperty(value = "剩余内存",required = true)
        public String free;
    }

    @ApiModel(description = "进程信息")
    public static class ProcessInfoVO {
        @ApiModelProperty(value = "线程正常运行时间",required = true)
        public Integer upTime;
        @ApiModelProperty(value = "进程id",required = true)
        public Integer processId;
        @ApiModelProperty(value = "线程实际使用物理内存",required = true)
        public String residentSetSize;
        @ApiModelProperty(value = "线程数",required = true)
        public Integer threadCount;
        @ApiModelProperty(value = "线程开始时间",required = true)
        public String startTime;
        @ApiModelProperty(value = "线程虚拟大小",required = true)
        public String virtualSize;
    }

    @ApiModel(description = "系统信息")
    public static class SysInfoVO {
        @ApiModelProperty(value = "服务器Ip",required = true)
        public String computerIp;
        @ApiModelProperty(value = "服务器名称",required = true)
        public String computerName;
        @ApiModelProperty(value = "系统架构",required = true)
        public String osArch;
        @ApiModelProperty(value = "项目路径",required = true)
        public String userDir;
        @ApiModelProperty(value = "操作系统名",required = true)
        public String osName;
    }

    @ApiModel(description = "系统jvm信息")
    public static class JvmInfoVO {
        @ApiModelProperty(value = "jvm总内存",required = true)
        public String total;
        @ApiModelProperty(value = "jvm内存使用率",required = true)
        public String usageRate;
        @ApiModelProperty(value = "jvm尝试使用的最大内存量",required = true)
        public String max;
        @ApiModelProperty(value = "jdk版本",required = true)
        public String jdkVersion;
        @ApiModelProperty(value = "空闲空间",required = true)
        public String free;
        @ApiModelProperty(value = "vm已使用内存",required = true)
        public String user;
        @ApiModelProperty(value = "jdk路径",required = true)
        public String jdkHome;
    }

    @ApiModel(description = "CPU信息")
    public static class CpuInfoVO {
        @ApiModelProperty(value = "cpu系统使用率",required = true)
        public String cSys;
        @ApiModelProperty(value = "cpu当前使用率",required = true)
        public String idle;
        @ApiModelProperty(value = "cpu当前等待率",required = true)
        public String iowait;
        @ApiModelProperty(value = "cpu用户使用率",required = true)
        public String user;
        @ApiModelProperty(value = "cpu核数",required = true)
        public Integer cpuNum;
    }

    @ApiModel(description = "系统盘符信息")
    public static class SysFileInfoVO {
        @ApiModelProperty(value = "磁盘总大小",required = true)
        public String total;
        @ApiModelProperty(value = "资源的使用率",required = true)
        public String usage;
        @ApiModelProperty(value = "文件类型",required = true)
        public String typeName;
        @ApiModelProperty(value = "盘符类型",required = true)
        public String sysTypeName;
        @ApiModelProperty(value = "已经使用量",required = true)
        public String used;
        @ApiModelProperty(value = "剩余大小",required = true)
        public String free;
        @ApiModelProperty(value = "盘符路径",required = true)
        public String dirName;
    }
}
